#include <iostream>
using namespace std;

class sequenceList {
private:
    float* myList;
    int curNumberOfItem;
    int maxCapcity;

public:
    sequenceList(const int&, const int&, float[]);
    ~sequenceList();
    bool addItem(const float&);
    bool insertItem(const int&, const float&);
    int deleteItem(const float&);
    bool locate(const int&, float&);
    int locate(const float&);
    void reverse();
    void print();
};

class listNode {
    friend class linkList;
    friend void merge(linkList&, linkList&);
private:
    float data;
    listNode* next;

public:
    // 默认构造函数
    listNode() : data(0.0f), next(nullptr) {}

    // 带参数的构造函数
    listNode(float nodeData, listNode* succ = nullptr) : data(nodeData), next(succ) {}

    ~listNode() {}
};

class linkList {
private:
    listNode* firstNode;
    listNode* curNode;
    listNode* lastNode;
    int listSize;

public:
    listNode* getHead() const 
    {
        return firstNode;
    }
    linkList();
    linkList(const int&, float[]);
    ~linkList();
    bool headInsertItem(const float&); // 按值头插
    bool tailInsertItem(const float&); // 按值尾插
    int insertItem(const int&, const float&); // 插入特定位置
    int deleteItem(const float&); // 按值删除
    bool locate(const int&, float&); // 按位查找
    int locate(const float&); // 按值查找
    void ascendingOrder(); // 升序
    void reverse(); // 倒排
    void print(); // 打印元素
};

void merge(linkList&, linkList&);